home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / zugabe / va45 / visual45 / library / extend / xbra.s < prev   
Text File  |  1998-05-16  |  3KB  |  113 lines

  1.  
  2. ;------------------------------------------------------------------------------
  3. ; Method name : -
  4. ; Asm label   : GWVA_XBRA_SEARCH_ONE_XBRA
  5. ; Description : Fonction de recherche d'une fonction respectant la norme XBRA
  6. ;
  7. ; Rq  : Fonction à exécuter en superviseur (SUPEXEC)
  8. ;
  9. ; in  : GWVA_ROOT_SEARCH_IN_OUT.l = pointeur sur le vecteur de départ de recherche
  10. ; in  : GWVA_ROOT_SEARCH_IN_OUT.l+4 = texte XBRA à rechercher
  11. ; out : GWVA_ROOT_SEARCH_IN_OUT.l =    ptr sur le mot long après la chaine 
  12. ;            donnée comme recherche ou 0.l si pas trouvé
  13. ;
  14. ; 16/05/98 : Création
  15. ;------------------------------------------------------------------------------
  16. GWVA_XBRA_SEARCH_ONE_XBRA:
  17.  
  18.     move.l ([GWVA_APP_OBJ_SEARCH_IN_OUT]),a0
  19.     move.l GWVA_APP_OBJ_SEARCH_IN_OUT+4,d0
  20.  
  21.     clr.l GWVA_APP_OBJ_SEARCH_IN_OUT
  22.  
  23. .search:    cmp.l #'XBRA',xbra_magic(a0)
  24.     bne.s .fin_liste
  25.  
  26.     cmp.l xbra_id(a0),d0
  27.     beq.s .found
  28.  
  29.     move.l xbra_next(a0),a0
  30.     cmp.l #0,a0
  31.     beq.s .fin_liste
  32.     bra.s .search
  33.  
  34. .found:    move.l a0,GWVA_APP_OBJ_SEARCH_IN_OUT
  35. .fin_liste:    rts
  36.  
  37. ;------------------------------------------------------------------------------
  38. ; Method name : -
  39. ; Asm label   : GWVA_XBRA_INSTALL_ONE_XBRA
  40. ; Description : Fonction pour installer une fonction à la norme XBRA
  41. ;
  42. ; Rq  : Fonction à exécuter en superviseur (SUPEXEC)
  43. ; Rq  : Ne teste pas s'il existe déjà, à vous de le faire en vous servant 
  44. ; Rq  : de GWVA_XBRA_SEARCH_ONE_XBRA
  45. ;
  46. ; in  : GWVA_ROOT_SEARCH_IN_OUT.l = pointeur sur le vecteur à changer
  47. ; in  : GWVA_ROOT_SEARCH_IN_OUT.l+4 = pointeur sur votre routine à la norme XBRA
  48. ;              XBRA, "TEXT", 0.l
  49. ; out : GWVA_ROOT_SEARCH_IN_OUT.l =    GWVA_NO_ERROR_GENERIC si installe correcte
  50. ;            GWVA_ERROR_GENERIC sinon
  51. ;
  52. ; 16/05/98 : Création
  53. ;------------------------------------------------------------------------------
  54. GWVA_XBRA_INSTALL_ONE_XBRA:
  55.  
  56.     move.l GWVA_ROOT_SEARCH_IN_OUT,a0
  57.     move.l GWVA_ROOT_SEARCH_IN_OUT+4,a1
  58.  
  59.     move.l #-1,GWVA_ROOT_SEARCH_IN_OUT
  60.  
  61.     cmp.l #'XBRA',xbra_magic(a1)
  62.     bne.s .cannot_install
  63.     tst.l xbra_next(a1)
  64.     bne.s .cannot_install
  65.  
  66.     move.l (a0),xbra_next(a1)
  67.     move.l a1,(a0)
  68.  
  69.     move.l #GWVA_NO_ERROR_GENERIC,GWVA_ROOT_SEARCH_IN_OUT
  70.     rts
  71. .cannot_install:
  72.     move.l #GWVA_ERROR_GENERIC,GWVA_ROOT_SEARCH_IN_OUT
  73.     rts
  74.  
  75. ;------------------------------------------------------------------------------
  76. ; Method name : -
  77. ; Asm label   : GWVA_XBRA_REMOVE_ONE_XBRA
  78. ; Description : Fonction pour enlever une fonction respectant la norme XBRA
  79. ;
  80. ; Rq  : Fonction à exécuter en superviseur (SUPEXEC)
  81. ;
  82. ; in  : GWVA_ROOT_SEARCH_IN_OUT.l = pointeur sur le vecteur pointant sur la fonction
  83. ; in  : GWVA_ROOT_SEARCH_IN_OUT.l+4 = texte de la fonction XBRA
  84. ; out : GWVA_ROOT_SEARCH_IN_OUT.l =    GWVA_NO_ERROR_GENERIC si enlèvement correcte
  85. ;            GWVA_ERROR_GENERIC sinon
  86. ;
  87. ; 16/05/98 : Création
  88. ;------------------------------------------------------------------------------
  89. GWVA_XBRA_REMOVE_ONE_XBRA:
  90.     move.l GWVA_ROOT_SEARCH_IN_OUT,a0
  91.     move.l GWVA_ROOT_SEARCH_IN_OUT+4,d0
  92.  
  93.     move.l #GWVA_ERROR_GENERIC,GWVA_ROOT_SEARCH_IN_OUT
  94.  
  95. .search:    move.l (a0),a1    ; a0=ptr sur struct XBRA
  96.     cmp.l #0,a1
  97.     beq.s .fin_liste
  98.     cmp.l #'XBRA',xbra_magic(a1)
  99.     bne.s .fin_liste
  100.  
  101.     cmp.l xbra_id(a1),d0
  102.     beq.s .found
  103.  
  104.     lea xbra_next(a1),a0
  105.     bra.s .search
  106.  
  107. .found:    move.l xbra_next(a1),(a0)
  108.     clr.l xbra_next(a1)
  109.  
  110.     move.l #GWVA_NO_ERROR_GENERIC,GWVA_ROOT_SEARCH_IN_OUT
  111.  
  112. .fin_liste:    rts
  113.